Add tmux-parity Claude Code plugin and skill#667
Open
tony wants to merge 7 commits into
Open
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #667 +/- ##
==========================================
+ Coverage 47.02% 47.11% +0.09%
==========================================
Files 23 23
Lines 3296 3296
Branches 709 709
==========================================
+ Hits 1550 1553 +3
+ Misses 1384 1381 -3
Partials 362 362 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
why: libtmux wraps ~28 of tmux's ~88 commands (~32% coverage). Need tooling to systematically audit gaps, compare across tmux versions, and guide implementation of new command wrappers. what: - Add .claude-plugin/ with manifest, commands, agent, skill, and scripts - /parity-audit: generate full feature parity report (commands, flags, format variables, options) - /version-diff: compare tmux features across 41 version worktrees - /implement-command: guided workflow for wrapping new tmux commands - parity-analyzer agent: auto-triggers on natural language parity queries - tmux-parity skill: shared domain knowledge with reference files (command mapping, implementation patterns, C source navigation) - Extraction scripts: parse tmux cmd-*.c and libtmux .cmd() invocations
…uto-discovery why: Claude Code auto-discovers plugin components at the project root, not inside .claude-plugin/. Agent wasn't showing up because it was nested under .claude-plugin/agents/. what: - Move agents/, commands/, skills/ to project root - Keep scripts/ in .claude-plugin/ (not auto-discovered) - Remove custom path overrides from plugin.json - Update cross-references between components
…d discovery why: Claude Code discovers project commands from .claude/commands/ and agents from .claude/agents/, not top-level directories. what: - Move 3 commands to .claude/commands/ - Move parity-analyzer agent to .claude/agents/ - Remove now-empty top-level commands/ and agents/ dirs
…erage why: The mapping doc was stale (said 28/88). Update to reflect 79/90 directly wrapped, 8 covered by alias/flag, 3 truly unwrappable. what: - Update summary to 87/90 effective coverage (96%) - Add table of 8 commands covered by alias/flag with explanation - Add table of 3 unwrappable commands with rationale
why: All 90 tmux commands are now either directly wrapped (82) or covered by aliases/flags (8). display-menu is wrapped but has a test gap. what: - Update summary to 82/90 directly wrapped (91%), 90/90 effective (100%) - Move display-menu from "Not Wrappable" to "Test Gaps" section - Remove command-prompt and confirm-before from unwrappable (now testable via send-keys -K) - Add "Notable Test Innovations" section documenting the send-keys -K approach and ControlMode testing patterns
why: SKILL.md said "~28 of ~88 tmux commands wrapped" and listed join-pane, swap-pane, run-shell, display-popup as high-priority unwrapped — all of which the tmux-parity branch wraps. command-mapping.md likewise listed last-pane, next-layout, previous-layout, move-pane as alias/flag-covered, despite the branch adding direct wrappers for each (commits dd8c65f, 2ab4c65, aa00c45). Static numbers in generated docs go stale fast; static "unwrapped" lists go stale faster. what: - Rewrite SKILL.md "Current Coverage Summary" to point at the extraction scripts rather than baking in a number/list that immediately rots. Note that effective coverage is 100%. - Rewrite command-mapping.md "Covered by Alias/Flag" — there are now exactly four indirect cases (list-panes, list-windows, set-window-option, show-window-options), all reached through internal queries / option scoping. Updated count from 8/82 to 4/86. - Convert ```bash command blocks to ```console with $ prefix per AGENTS.md.
…S.md why: AGENTS.md "Shell Command Formatting" requires command examples in docs to use ```console with a "$ " prefix (not ```bash) and to keep one command per code block so the prompt is unambiguous and copy-pastable. The plugin docs added in this branch had multi-command ```bash blocks scattered across .claude/commands and skills/tmux-parity references. what: - .claude/agents/parity-analyzer.md: 3 blocks → console+$. - .claude/commands/version-diff.md: 2 blocks → console+$. - .claude/commands/implement-command.md: split the 6-command verification block into 6 console+$ blocks. - skills/tmux-parity/references/tmux-command-table.md: 2 blocks → console+$ (one of which had two ls invocations — split per AGENTS.md "one command per block").
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Extracts the Claude Code plugin and skill that were used to produce the
tmux command-parity work in #653 into their own changeset, so #653 can
stay focused on library code.
Adds:
.claude-plugin/plugin.jsondeclaring thetmux-parityplugin.claude/commands/:parity-audit,version-diff,implement-commandparity-analyzeragent in.claude/agents/tmux-parityskill inskills/tmux-parity/documenting thetmux ↔ libtmux mapping and analysis methodology
.claude-plugin/scripts/These files are not part of the published wheel/sdist (verified against
pyproject.toml'spackages = [{include = "*", from = "src"}]) andnothing in
src/,tests/,docs/,conftest.py,pyproject.toml,README.md,CLAUDE.md,AGENTS.md,CHANGES,.gitignore, orCI references them.
Merge ordering
This PR must merge AFTER #653. The skill's
command-mapping.mdclaims 100% effective coverage of 90 tmux commands, which only becomes
true once #653 is on
master. Opening this in parallel so theplugin/skill can be reviewed independently of the library work.
Test plan
.claude/commands/*are discoverable in a Claude Code session inside this checkoutbash .claude-plugin/scripts/extract-libtmux-methods.shandextract-tmux-commands.shemit usable datapython -m build(oruv build) does not include.claude*orskills/paths in the wheel/sdist